@tool
class_name AdditionalEffect_ModifyPropertyData
extends AdditionalEffect

## 给PropertyData添加修改器

#region 属性
@export var property_data_name:String
@export var modifier:PropertyModifier
var modifier_id:int
#endregion
#region 字段
#endregion
#region 信号
#endregion

#region 基类方法
## 初始化
func init(args:Dictionary = {}):
	if super(args):
		return true
	return false
## 检查能否执行添加效果，默认为true
func can_excute() -> bool:
	var entity:Entity = target
	if not entity:
		return false
	var entity_data = entity.entity_data
	return super() and property_data_name in entity_data and entity_data[property_data_name] is PropertyData
## 执行添加效果
func excute() -> bool:
	if super():
		var property_data:PropertyData = target.entity_data[property_data_name] as PropertyData
		modifier_id = property_data.add_modifier(str(get_instance_id()) if not modifier.tag else modifier.tag,modifier.value)
		return true
	else:
		return false
## 取消执行的效果
func cancel_excute() -> bool:
	if super():
		var property_data:PropertyData = target.entity_data[property_data_name] as PropertyData
		property_data.remove_modifier_by_id(modifier_id)
		return true
	else:
		return false
#endregion
#region 公共方法
#endregion
#region 私有方法
#endregion
#region 生命周期函数
func _init() -> void:
	if Engine.is_editor_hint():
		resource_local_to_scene = true
#endregion
